import java.util.concurrent.CompletableFuture;

public class Lesson3 {

    /**
     * 在前一个阶段上应用函数
     *
     *  下面这个例子使用前面 #1 的完成的CompletableFuture，
     *  #1返回结果为字符串message,然后应用一个函数把它变成大写字母。
     *
     *  注意thenApply方法名称代表的行为。
     *
     *  then意味着这个阶段的动作发生当前的阶段正常完成之后。
     *  本例中，当前节点完成，返回字符串message。
     *
     *  Apply意味着返回的阶段将会对结果前一阶段的结果应用一个函数。
     *
     *  函数的执行会被阻塞 ，这意味着getNow()只有当前操作被完成后才返回。
     *
     * */
    public static void main(String[] args) {
        CompletableFuture completableFuture = CompletableFuture
                .completedFuture("message")
                .thenApply(s -> s.toUpperCase());
        System.out.println(completableFuture.getNow(null));
    }
}
